import 'package:meta/meta.dart';

/// An enumeration of the different audio device types.
@experimental
enum AudioDeviceType {
  /// Unknown type.
  unknown,

  /// The phone earpiece used for listening to calls.
  builtInEarpiece,

  /// The built-in speaker.
  builtInSpeaker,

  /// A wired headset with both microphone and earphones.
  wiredHeadset,

  /// Wired headphones.
  wiredHeadphones,

  /// The microphone on a headset.
  headsetMic,

  /// An analog line connection.
  lineAnalog,

  /// A digital line connection.
  lineDigital,

  /// A bluetooth device typically used for telephony.
  bluetoothSco,

  /// A bluetooth device supporting the A2DP profile.
  bluetoothA2dp,

  /// An HDMI connection.
  hdmi,

  /// The audio return channel of an HDMI connection.
  hdmiArc,

  /// A USB audio device.
  usbAudio,

  /// A device associated with a dock.
  dock,

  /// An FM transmission device.
  fm,

  /// The built-in microphone.
  builtInMic,

  /// An FM receiver device.
  fmTuner,

  /// A TV receiver device.
  tvTuner,

  /// A transmitter for the telephony network.
  telephony,

  /// An auxiliary line connector.
  auxLine,

  /// A device connected over IP.
  ip,

  /// A device used to communicate with external audio systems.
  bus,

  /// A hearing aid.
  hearingAid,

  /// An AirPlay device.
  airPlay,

  /// A Bluetooth LE device.
  bluetoothLe,

  /// An Audio Video Bridging device.
  avb,

  /// A DisplayPort device.
  displayPort,

  /// A Car Audio connection.
  carAudio,

  /// A FireWire device.
  fireWire,

  /// A PCI device.
  pci,

  /// A Thunderbolt device.
  thunderbolt,

  /// A connection not corresponding to a physical device.
  virtual,

  /// A built-in speaker used for outputting sounds like notifications and
  /// alarms.
  builtInSpeakerSafe,

  /// Android internal
  remoteSubmix,
}